This invention relates primarily to the writing of digital data received from a host onto a magnetic storage media such as a magnetic disk drive. The typical method of writing such data onto a magnetic disk is to energize a coil having an air gap disposed in close proximity to a magnetizable disk so that a magnetic flux transition is written to the disk. Clearly the density at which such transitions can reliably be written and later detected is a limitation on the performance of any given disk drive; it would be desirable to increase this density in order to improve the performance of the disk drive. An alternative method for improving the performance of the drive is to encode data as received from a host computer or other source of data, so that less actual flux transitions are required to represent a given quantity of data. The prior art shows numerous methods for encoding data such as data compression, i.e., removing redundancies, and the like. Other methods include logical analysis of data received from a host computer and writing an encoded representation of the data which can later be decoded to reconstruct the original data. In particular, such codes, commonly known as "run length limited codes", utilize the fact that what is actually written on disk is magnetic flux transitions which are used to indicate the presence of binary "ones"--that is, binary "zeroes" are not specifically written. Instead the rules of the code are used to decode the encoded data; the zeroes thus eliminated are reinserted upon decoding. In this way, flux transitions corresponding only to the ones in the data are written, and the zeroes are interposed upon decoding. An example of such a run length limited code is shown in U.S. Pat. No. 3,852,687 to Hodges. This code may be termed a 2,8 code; that is, one according to which at least 2 zeroes are to be interposed between each flux change recorded on the disk, while no more than 8 zeroes may be interposed between flux changes on the disk. The Hodges patent explains how these two rules may be used to encode data of a fixed length per code sequence. The advantage provided is that eight bits can be reduced in some cases to five recorded flux changes, i.e., eight data bits are "mapped" to five flux changes, providing up to a 40% saving in space.
The Hodges patent was filed in 1973. At that time, the solid state manufacturing technology available and used to implement its method was not as advanced as that available at the time of the present application. In paticular, the solid state technology then current was so-called bipolar technology, while the most advanced integrated circuit devices then available are known as "MSI", for medium scale integration. This bipolar technology offers the advantage of fast switching, so that the logical operations required by the Hodges patent can be performed at a high data rate, but offers the disadvantage that a great deal of heat is generated in these operations. This heat limits the number of logic gates which can be packed onto a single chip, thus providing a minimum size to the apparatus for performing the Hodges method. Present tendencies are to implement such coding methods in LSI (Large Scale Integrated) circuits, which operate using field effect transistor (FET) circuitry. This type of circuitry generates much less heat than the bipolar technology referred to above, thus enabling greater integration and saving of space per given number of logic gates, but the switching rate available using the FET technology is slower. Accordingly, if a given data rate is to be maintained using LSI technology an encoding technique is required which calls for lower numbers of logical operations to be performed.
It will be appreciated by those skilled in the art that data is typically input by a host to a disk drive for storage byte-wise. That is, bits are parallelled over an eight-bit line such that eight-bit bytes arrive synchronously. However, data is stored on a disk drive serially; that is, one bit at a time. Accordingly, it is necessary to provide means for serializing data in a write mode and for deserializing the data in a read mode. It would naturally be desirable if this operation could be combined with an encoding technique as discussed above.